class Dep {
    // Dep 不仅是订阅者 他订阅后还要收集watcher来更新模板 所以Dep也可以说是发布者
    constructor() {
        this.watcher = []
    }
    // target 表示节点, 当在模板中调用变量时,target指向哪个dom节点
    static target = null

    depend() {
        console.log('Dep.target ==> ', Dep.target);
        this.watcher.push(Dep.target)
    }

    // 通知依赖 watcher 更新
    notify() {
        this.watcher.forEach(sub => {
            sub.update()
        })
    }
}

export default Dep